package www.wuhen.ltd.demos;
import org.json.JSONArray;
import org.json.JSONObject;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * @author wuhen
 */
public class MySQLExample {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            // 加载JDBC驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 连接到数据库
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/ceshi", "root", "root");
            // 创建Statement对象
            statement = connection.createStatement();
            // 执行查询 使用linit查询50条
            resultSet = statement.executeQuery("SELECT * FROM oa LIMIT 50");
            // 创建JSON数组来存储结果
            JSONArray jsonArray = new JSONArray();
            // 处理查询结果
            while (resultSet.next()) {
                // 创建JSON对象来存储一行数据
                JSONObject jsonObject = new JSONObject();
                //循环遍历数据
                for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
                    // 获取数据库字段key
                    String columnValue = resultSet.getString(i);
                    // 获取数据库字段value
                    String columnName = resultSet.getMetaData().getColumnName(i);
                    // 放到json对象种
                    jsonObject.put(columnName, columnValue);
                }
                // 放到jsonarray数组
                jsonArray.put(jsonObject);
            }
            // 打印JSON结果// 使用4个空格缩进
            System.out.println(jsonArray.toString(4));
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

